#ifndef __CAMERA_H__
#define __CAMERA_H__
#include "Framework.hpp"


class Camera {
 public:
  Camera();
  ~Camera();
  /*Update camera position on every frame
   *time since last frame*/
  void Update(float deltaT);
  
  /*Called by the main event handler*/
  void HandleEvent(sf::Event evt);
  
  /*Set the camera view transform, called before model rendering*/
  void Setup();

  /*changing free flying mode*/

 private:
  void updateNearPlane();

 public:
  
  /*camera world position*/
  glm::vec3 currentLocation;
  glm::vec3 lastLocation;

  float viewYaw;
  float viewPitch;

  glm::vec3  faceVector;
  glm::vec3  upVector;
  glm::vec3  rightVector;
 private:

  bool flyMode;
  ////////////////////////////Keyboard///////////////////////////////
  /*movement velocity per 10 ms*/
  float wsvel;
  float advel;
  float hvel;
  bool inJump;
  /*movement direction*/
  int wsdir;
  int addir;


  ///////////////////////////Mouse////////////////////////////////////////
  int dmx;
  int dmy;
  

  float timeLeft;
};
#endif
